package io;

import java.io.*;

/**
 * 缓冲字符流
 * java.io.BufferedWriter 和 BufferedReader
 * 缓冲字符流内部也有一个数组(字符数组)，将读写操作同一转换为块读来保证字符的效率。
 *
 * java.io.PrintWriter是具有自动行刷新的缓冲字符输出流，内部总是链接BufferedWriter作为缓冲
 * 加速功能，其提供了直接按行写出字符串的相关操作。写字符串更方便.
 *
 *                   PrintWriter(pw:自动行刷新)
 *                   ^^^^^^^^^^^(包含)
 * app <---["pw"----bw(缓冲字符流)----osw(转换流)-----fos(低级流)]---> ***.txt
 *          ^^
 */
public class PWDemo1 {
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
        /** PrintWriter 具有自动行刷新的缓冲字符输出流 */
        /*1.自动换刷新 2.换行写出字符串*/
        PrintWriter pw = new PrintWriter("pw.txt","UTF-8");
        /** println(""):换行打印 */
        pw.println("剑圣:人在塔在！");
        pw.println("蛮王:我的大刀早已饥渴难耐！");
        pw.println("剑魔:......！");
        pw.close();

        //        PrintWriter pws = new PrintWriter(obs, true ); 相遇有pws.flush();
        /*
        在流链接中创建PrintWriter时，构造方法允许我们在传入一个boolean型参数，该值为true
        时当前PW就具有自动行刷新功能，即:每当我们调用 println 方法时会自动 flush.
        注意:print
            方法写出后不会自动flush.
         */

        /** 缓冲字符流:
         * BufferedWriter 和 BufferedReader */
        //1.数据加速2.读取字符串
        //缓冲字符流内部也有一个数组(字符数组)，将读写操作同一转换为块读来保证字符的效率。
        /**
         * 使用转换流读取文本数据
         */
        FileOutputStream fos = new FileOutputStream("biubui01.ttx");
        OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
        BufferedWriter bsw = new BufferedWriter(osw);
        PrintWriter psw = new PrintWriter(bsw);
        psw.println("艾斯:超兽与普通怪兽不一样;");
        psw.println("他们是感觉不到疼痛的？");
        psw.println("***：？？？");
        System.out.println("执行结束!");
        psw.close();




    }
}
